/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.gym.manager.mundo;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.Vector;
import javax.microedition.lcdui.Image;

/**
 *
 * @author Sergio
 */
public class Gimnasio
{
    private Vector maquinas;
    private Vector cMedicas;
    private Vector restricciones;
    private Vector ejercicios;
    private Deportista usuario;
    private Vector asistentes;
    private Vector objetivos;

    public Gimnasio()
    {
        objetivos = new Vector();
        ejercicios = new Vector();
        usuario = new Deportista();
        asistentes = new Vector();
        cMedicas = new Vector();
        restricciones = new Vector();

        //TODO: Lo de abajo es solo para probar
        objetivos.addElement("Lose weight");
        objetivos.addElement("Increase muscle mass.");
        objetivos.addElement("Increase resistance.");
        objetivos.addElement("Increase cardiovascular capacity.");

        ejercicios.addElement(new Ejercicio(0, -1, -1, -1, -1, "Barras", 2, new Maquina("/iconos/abdominal.png"), -1, null, null, null, null, -1));
        ejercicios.addElement(new Ejercicio(0, -1, -1, -1, -1, "Flexiones pecho", 2, new Maquina("/iconos/abdominal.png"), -1, null, null, null, null, -1));
        ejercicios.addElement(new Ejercicio(0, -1, -1, -1, -1, "Sentadillas", 2, new Maquina("/iconos/abdominal.png"), -1, null, null, null, null, -1));
        ejercicios.addElement(new Ejercicio(0, -1, -1, -1, -1, "Abdominales", 2, new Maquina("/iconos/abdominal.png"), -1, null, null, null, null, -1));
        ejercicios.addElement(new Ejercicio(0, -1, -1, -1, -1, "Trotar", 1, new Maquina("/iconos/jogging.jpg"), -1, null, null, null, null, -1));

    }

    public Vector getAsistentes() {
        return asistentes;
    }

    public void setAsistentes(Vector asistentes) {
        this.asistentes = asistentes;
    }

    public Vector getObjetivos() {
        return objetivos;
    }

    public void setObjetivos(Vector objetivos) {
        this.objetivos = objetivos;
    }


    public Vector getcMedicas() {
        return cMedicas;
    }

    public void setcMedicas(Vector cMedicas) {
        this.cMedicas = cMedicas;
    }

    public Vector getEjercicios() {
        return ejercicios;
    }

    public void setEjercicios(Vector ejercicios) {
        this.ejercicios = ejercicios;
    }

    public Vector getMaquinas() {
        return maquinas;
    }

    public void setMaquinas(Vector maquinas) {
        this.maquinas = maquinas;
    }

    public Vector getRestricciones() {
        return restricciones;
    }

    public void setRestricciones(Vector restricciones) {
        this.restricciones = restricciones;
    }

    public Deportista getUsuario() {
        return usuario;
    }

    public void setUsuario(Deportista usuario) {
        this.usuario = usuario;
    }

    public Rutina crearRutina(Date fechaInicio, Date fechaFin)
    {
        int numRutinas = usuario.getHistorialRutinas().size();
        return new Rutina(numRutinas++, fechaInicio, fechaFin);
    }

    public void guardar() throws IOException
    {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);

        int i,j,k,w=0;
        Vector rutinas = usuario.getHistorialRutinas();

        long temporal =0;
        int ident=0;
        Date fechaInicio=null;
        Date fechaFin=null;
        Vector ejercicios=null;
        int duracion=0;
        String observaciones="";
        Vector objetivos=null;
        Vector asistencia=null;
        int diaActual=0;
        int numDias=0;
        String nombre="";
                       
        for(i=1;i<rutinas.size();i++)
        {
            Rutina rutina = (Rutina) rutinas.elementAt(i);
            temporal = rutina.getTemporal();
            dos.writeLong(temporal);

            ident=rutina.getIdent();
            dos.writeInt(ident);

            fechaInicio=rutina.getFechaInicio();
            String s = fechaInicio.toString();
            dos.writeUTF(s);

            fechaFin=rutina.getFechaFin();
            String h = fechaFin.toString();
            dos.writeUTF(h);

            duracion=rutina.getDuracion();
            dos.writeInt(duracion);

            diaActual=rutina.getDiaActual();
            dos.writeInt(diaActual);
            
            numDias=rutina.getNumDias();
            dos.writeInt(numDias);

            nombre=rutina.getNombre();
            dos.writeUTF(nombre);

            ejercicios=rutina.getEjercicios();
            objetivos=rutina.getObjetivos();
            asistencia=rutina.getAsistencia();

            for(w=0;w<ejercicios.size();w++)
            {
                Ejercicio ejercicio = (Ejercicio) ejercicios.elementAt(w);
                int id = ejercicio.getIdent();
                dos.writeInt(id);

                int series = ejercicio.getSeries();
                dos.writeInt(series);

                int repeticiones = ejercicio.getRepeticiones();
                dos.writeInt(repeticiones);
                
                int dura = ejercicio.getDuracion();
                dos.writeInt(dura);

                int nivel = ejercicio.getNivel();
                dos.writeInt(nivel);

                String nomb = ejercicio.getNombre();
                dos.writeUTF(nomb);

                int tip = ejercicio.getTipo();
                dos.writeInt(tip);

                Maquina maquina = ejercicio.getMaquina();
                String desc = maquina.getDescripcion();
                dos.writeUTF(desc);
                int identif = maquina.getIdent();
                dos.writeInt(identif);
                Image img = maquina.getImagen();
                String imgs = img.toString();
                dos.writeUTF(imgs);
                String name = maquina.getNombre();
                dos.writeUTF(name);

                float peso = ejercicio.getPeso();
                dos.writeFloat(peso);
                
                Vector diasDeEjecucion = ejercicio.getDiasDeEjecucion();
                for(int y=0;y<diasDeEjecucion.size();y++)
                {
                    Boolean tok = (Boolean)diasDeEjecucion.elementAt(y);
                    if(tok == Boolean.FALSE)
                        dos.writeBoolean(false);
                    else if(tok == Boolean.TRUE)
                        dos.writeBoolean(false);
                }

                String instruccion = ejercicio.getInstruccion();
                dos.writeUTF(instruccion);

                Vector musculosObjetivo = ejercicio.getMusculosObjetivo();

                Vector imagenes = ejercicio.getImagenes();

                int video = ejercicio.getVideo();
                dos.writeInt(video);


            }

            for(k=0;k<objetivos.size();k++)
            {
                String objetivo = (String) objetivos.elementAt(k);
                dos.writeUTF(objetivo);
            }


            for(j=0;j<asistencia.size();j++)
            {
                Boolean asistio = (Boolean)asistencia.elementAt(j);
                if(asistio == Boolean.FALSE)
                    dos.writeBoolean(false);
                else if(asistio == Boolean.TRUE)
                    dos.writeBoolean(false);
            }


        }

    }


    

}
